package com.atguigu.mybatisplus.model.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Pattern;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.time.LocalDateTime;

@Data
@TableName("sys_user")
@Schema(description = "用户对象")
public class User implements Serializable {
    /**
     * 主键ID
     */
    @Schema(description = "用户ID")
    @TableId(type = IdType.AUTO)
    private Long id;
    /**
     * 用户名称
     */
    @Schema(description = "用户名")
    private String username;
    /**
     * 用户昵称
     */
    @Schema(description = "用户昵称")
    private String nickname;
    /**
     * 性别（1-男，2-女，0-未知）
     */
    @Schema(description = "用户性别")
    private Integer gender;
    /**
     * 密码
     */
    @Schema(description = "用户密码")
    private String password;
    /**
     * 部门id
     */
    @Schema(description = "用户部门ID")
    private Long deptId;
    /**
     * 用户头像
     */
    @Schema(description = "用户头像")
    private String avatar;
    /**
     * 联系方式
     */
    @Schema(description = "用户联系方式")
    @Pattern(regexp = "^$|^1(3\\d|4[5-9]|5[0-35-9]|6[2567]|7[0-8]|8\\d|9[0-35-9])\\d{8}$", message = "手机号码格式错误")
    private String mobile;
    /**
     * 状态（0-正常，1-停用）
     */
    @Schema(description = "用户状态")
    private Integer status;
    /**
     * 用户邮箱
     */
    @Schema(description = "用户邮箱")
    private String email;
    /**
     * 创建时间
     */
    @Schema(description = "用户创建时间")
    private LocalDateTime createTime;
    /**
     * 创建人ID
     */
    @Schema(description = "用户创建人ID")
    private Long createBy;
    /**
     * 更新时间
     */
    @Schema(description = "用户更新时间")
    private LocalDateTime updateTime;
    /**
     * 更新人ID
     */
    @Schema(description = "用户更新人ID")
    private Long updateBy;
    /**
     * 逻辑删除标志（0-未删除，1-已删除）
     */
    @Schema(description = "用户逻辑删除标志")
    private Integer isDeleted;
    /**
     * 微信openid
     */
    @Schema(description = "用户微信openid")
    private String openid;
}
